home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 7 / Amiga Format AFCD07 (Dec 1996, Issue 91).iso / serious / shareware / cd-rom / cdplay370 / demo / cdplay_demo.c < prev    next >
C/C++ Source or Header  |  1996-09-19  |  5KB  |  147 lines

  1.  
  2. /*
  3. **  cdplay_demo.c
  4. **
  5. **  © 1995, 96 by Patrick Hess, all rights reserved.
  6. **  $VER: cdplay_demo.c 1.0 (20.09.1996)
  7. **
  8. **  simple usage demo of the cdplay.library
  9. **
  10. */
  11.  
  12.  
  13. /*  I`m always using my all.gst file with precompiled includes. 
  14.     You have to insert necessary includes yourself, sorry!       */
  15.  
  16.  
  17. #include <libraries/cdplay.h>
  18. #include <proto/cdplay_protos.h>
  19. #include <pragmas/cdplay_pragmas.h>
  20.  
  21. struct Library *CDPlayBase;
  22.  
  23. void main (int argc, char **argv)
  24. {
  25.     struct CDRequest *cdr;
  26.     
  27.     int i = 0;
  28.  
  29.     if (argc != 2)
  30.     {
  31.         Printf ("Usage: %s <Arg>\n", argv[0]);
  32.         exit (NULL);
  33.     }
  34.  
  35.  
  36.     if (CDPlayBase = OpenLibrary (CDPLAYNAME, CDPLAYVERSION))
  37.     {
  38.         if (cdr = CDOpenDrive ("2060scsi.device", 2))
  39.         {
  40.             Printf ("Device is open.\n");
  41.  
  42.             switch (argv[1][0])
  43.             {
  44.                 case    'd':
  45.                     Printf ("%s\n", cdr->cdr_ID);
  46.                     break;
  47.  
  48.                 case    'j':
  49.                     CDJump (((argv[1][1] == '-') ? -150 : 150), cdr);
  50.                     break;
  51.  
  52.                 case    'l':
  53.                     CDLockDrive ((argv[1][1] == '1' ? TRUE : FALSE), cdr);
  54.                     break;
  55.  
  56.                 case    'o':
  57.                     CDOpen (cdr);
  58.                     break;
  59.  
  60.                 case    'c':
  61.                     CDClose (cdr);
  62.                     break;
  63.  
  64.                 case    's':
  65.                     CDStop (cdr);
  66.                     break;
  67.  
  68.                 case    'n':
  69.                     CDNext (cdr);
  70.                     break;
  71.  
  72.                 case    'b':
  73.                     CDPrev (cdr);
  74.                     break;
  75.  
  76.                 case    'g':
  77.                     CDPlay ((argv[1][1] - '0'), cdr);
  78.                     break;
  79.  
  80.                 case    'p':
  81.                     CDPause ((argv[1][1] == '1' ? TRUE : FALSE), cdr);
  82.                     break;
  83.  
  84.                 case    't':
  85.                     Printf ("Title: %02ld:%02ld of %02ld:%02ld, %02ld:%02ld remaining.\n",
  86.                         base2min (cdr->cdr_Time->cdt_TrackCurBase), base2sec (cdr->cdr_Time->cdt_TrackCurBase),
  87.                         base2min (cdr->cdr_Time->cdt_TrackCompleteBase), base2sec (cdr->cdr_Time->cdt_TrackCompleteBase),
  88.                         base2min (cdr->cdr_Time->cdt_TrackRemainBase), base2sec (cdr->cdr_Time->cdt_TrackRemainBase));
  89.  
  90.                     Printf ("CD:    %02ld:%02ld of %02ld:%02ld, %02ld:%02ld remaining.\n",
  91.                         base2min (cdr->cdr_Time->cdt_AllCurBase), base2sec (cdr->cdr_Time->cdt_AllCurBase),
  92.                         base2min (cdr->cdr_Time->cdt_AllCompleteBase), base2sec (cdr->cdr_Time->cdt_AllCompleteBase),
  93.                         base2min (cdr->cdr_Time->cdt_AllRemainBase), base2sec (cdr->cdr_Time->cdt_AllRemainBase));
  94.                     break;
  95.  
  96.                 case    'i':
  97.                     Printf ("DeviceType %ld, ANSIVersion %ld, ResponseFormat %ld, ISOVersion %ld, ECMAVersion %ld.\n", cdr->cdr_Inquiry->cdi_DeviceType, cdr->cdr_Inquiry->cdi_ANSIVersion, cdr->cdr_Inquiry->cdi_ResponseFormat, cdr->cdr_Inquiry->cdi_ISOVersion, cdr->cdr_Inquiry->cdi_ECMAVersion);
  98.                     Printf ("%s (Vendor), %s (ProductID), %s (RevLevel), %s (VendorSpecific)\n", cdr->cdr_Inquiry->cdi_VendorID, cdr->cdr_Inquiry->cdi_ProductID, cdr->cdr_Inquiry->cdi_RevisionLevel, cdr->cdr_Inquiry->cdi_VendorSpecific);
  99.  
  100.                     if (cdr->cdr_Active != SCSI_STAT_NO_DISK)
  101.                     {
  102.                         Printf ("%ld max sector, sector size %ld, %ld bytes capacity.\n", cdr->cdr_Capacity->cdc_MaxSector, cdr->cdr_Capacity->cdc_SectorSize, cdr->cdr_Capacity->cdc_Capacity);
  103.  
  104.                         Printf ("%s, %s, %s, %s, %s\n%s, %s, %s, %s, %s.\n", (btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_REMOVABLE) ? "REMOVABLE" : "NOT REMOVABLE"),
  105.                             (btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_AENC) ? "AENC" : "NO AENC"),
  106.                             (btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_REL_ADDRESS) ? "REL_ADDRESS" : "NO REL_ADDRESS"),
  107.                             (btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_16WIDE_DATA) ? "16WIDE_DATA" : "NO 16WIDE_DATA"),
  108.                             (btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_32WIDE_DATA) ? "32WIDE_DATA" : "NO 32WIDE_DATA"),
  109.                             (btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_SYNC) ? "SYNC" : "NO SYNC"),
  110.                             (btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_LINKED) ? "LINKED" : "NOT LINKED"),
  111.                             (btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_CMDQUE) ? "CMDQUE" : "NO CMDQUE"),
  112.                             (btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_SOFTRESET) ? "SOFTRESET" : "HARDRESET"),
  113.                             (btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_TRMIOP) ? "TRMIOP" : "NO TRMIOP"));
  114.  
  115.                         Printf ("TOCSize %ld bytes, first track: %ld, last track: %ld\n", cdr->cdr_TOC->cdptoc_TOCSize, cdr->cdr_TOC->cdptoc_FirstTrack, cdr->cdr_TOC->cdptoc_LastTrack);
  116.  
  117.                         for (i = cdr->cdr_TOC->cdptoc_FirstTrack; i <= cdr->cdr_TOC->cdptoc_LastTrack; i++)
  118.                         {
  119.                             struct CDTrack *tr;
  120.  
  121.                             tr = &cdr->cdr_TOC->cdptoc_Track[i];
  122.                             Printf ("track %ld: position %ld, subchan %ld, %s pre_emph, %s copy proh., %s, %s\n", i, tr->tr_Position, tr->tr_SubChan, (btst (tr->tr_Flags, IFLAG_PRE_EMPHASIS) ? "" : "no"), (btst (tr->tr_Flags, IFLAG_COPY_PROHIBITED) ? "" : "no"), (btst (tr->tr_Flags, IFLAG_AUDIO_TRACK) ? "audio" : "data"), (btst (tr->tr_Flags, IFLAG_2_CHAN) ? "2 chan" : "4 chan"));
  123.                         }
  124.  
  125.                         Printf ("cur track %ld, cur address %ld, active %ld\n", cdr->cdr_CurrentTrack, cdr->cdr_CurrentAddress, cdr->cdr_Active);
  126.                     }
  127.                     else
  128.                         PutStr ("no disk in drive\n");
  129.                     break;
  130.  
  131.                 default:
  132.                     Printf ("unknown command.\n");
  133.                     break;
  134.             }
  135.  
  136.             CDCloseDrive (cdr);
  137.         }
  138.         else
  139.             PutStr ("Can`t open device.\n");
  140.  
  141.         CloseLibrary (CDPlayBase);
  142.     }
  143.     else
  144.         Printf ("Can`t open \"%s\" Version %ld.\n", CDPLAYNAME, CDPLAYVERSION);
  145. }
  146.  
  147.